const app = getApp();
// 评论倒计时
var countdown = 60;
let time = require('../../../utils/time.js');
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 管理员OpenID
    adminOpenid: app.globalData.adminOpenid,
		// 评论区开关
		CommentSwitch: false,
		// 是否隐藏提交按钮/60s倒计时
		commentBtnShow: false,
		ButtonTimer: '',//  发送评论按钮定时器
		LastTime: 60,
    // 输入框中的数据，提交评论后清除
    commentContent: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({ 
      skin: app.globalData.skin
    });
    //查询（刷新）评论内容
    this.selectAllMessages();
    this.loadUserInfo();
  },
  loadUserInfo(){
    let timestamp = Date.parse(new Date());
    let expiration = wx.getStorageSync("userInfoExpiration");
    let userInfo = wx.getStorageSync("userInfo")
    if(expiration > timestamp && userInfo){
      console.log("storage缓存中有用户信息~");
      this.setData({ userInfo: userInfo });
      return;
    }
    console.log("缓存中无userInfo或已过期~~");
  },
  /**
   * 获取用户头像昵称信息组件回调方法
   */
  getAvaNickData(res) {
    console.log("组件回调：",res);
    const {avatarUrl,nickName} = res.detail
    this.setData({
      'userInfo.avatarUrl': avatarUrl,
      'userInfo.nickName': nickName,
      'userInfo.hasUserInfo': true
    });
    // 调用云函数获取微信的openid判断是不是管理员
    wx.cloud.callFunction({
      // 云函数名称
      name: 'getOpenID',
      // 传给云函数的参数
      data: {},
      success: (res) => {
        console.warn("你的OpenID为:", res.result.openid);
        this.setData({
          'userInfo.happyBean': res.result.happyBean,
          'userInfo.openid': res.result.openid
        });
        if (res.result.openid == this.data.adminOpenid) {
          this.setData({
            'userInfo.Role': '管理员',
            'userInfo.adminRoleFlag': true
          });
        } else {
          this.setData({
            'userInfo.Role': '游客',
            'userInfo.adminRoleFlag': false
          });
        }
        console.log("最终要存入缓存的userInfo：",this.data.userInfo);
        app.globalData.userInfo = this.data.userInfo;
        wx.setStorageSync('userInfo', this.data.userInfo);
        // 有效期7天，1分钟=60000ms
        let expiration = Date.parse(new Date()) + (7 * 24 * 60 * 60000)
        wx.setStorage({
          data: expiration,
          key: 'userInfoExpiration'
        });
      },
      fail: (error) => {
        console.log("getOpenID云函数调用失败：", error);
        wx.showModal({
          title: '提示',
          content: 'getOpenID云函数调用失败'
        })
      }
    });
  },
  getUserInfo(){
    // this.loadUserInfo();
    this.setData({ showAvaModal: true });
    /* （官方已废弃）
    wx.getUserProfile({
      desc: '微信授权访问', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        console.log("微信授权访问",res);
        this.setData({
          userInfo: res.userInfo,
          'userInfo.hasUserInfo': true
        });
        // 调用云函数获取微信的openid判断是不是管理员
        wx.cloud.callFunction({
          // 云函数名称
          name: 'getOpenID',
          // 传给云函数的参数
          data: {},
          success: (res) => {
            this.setData({
              'userInfo.happyBean': res.result.happyBean,
              'userInfo.openid': res.result.openid
            });
            if (res.result.openid == this.data.adminOpenid) {
              this.setData({
                'userInfo.Role': '管理员',
                'userInfo.adminRoleFlag': true
              });
            } else {
              this.setData({
                'userInfo.Role': '游客',
                'userInfo.adminRoleFlag': false
              });
            }
            wx.setStorageSync('userInfo', this.data.userInfo);
            // 有效期7天，1分钟=60000ms
            let expiration = Date.parse(new Date()) + (7 * 24 * 60 * 60000)
            wx.setStorage({
              data: expiration,
              key: 'userInfoExpiration'
            });
          },
          fail: (error) => {
            console.log("getOpenID云函数调用失败：", error);
            wx.showModal({
              title: '提示',
              content: 'getOpenID云函数调用失败'
            })
          }
        });
      },
      fail: (error) => {
        console.log("微信授权失败：", error);
        wx.showModal({
          title: '提示',
          content: '微信授权失败'
        })
      }
    });
    */
  },
  //查询（刷新）评论内容
	selectAllMessages(){
    if(app.globalData.commentList){
      this.setData({ commentList: app.globalData.commentList });
      return;
    }
		wx.cloud.callFunction({
      name: "query",
      data: {
        dbName: "t_comments",
        // 查询条件，评论状态status：0-未审核，1-已审核，2-已删除
        filter: {
          status: 1
        },
      },
      success: (res) => {
        console.log("查询评论列表回调：", res)
        this.setData({
          commentList: res.result.data
        });
        app.globalData.commentList = res.result.data;
      },
      fail: (error) => {
        wx.showToast({
          title: '查询失败',
          icon: 'none',
          duration: 2000, //单位ms，默认1500
          mask: true
        });
      }
    })
  },
  /**
	 * 用户输入的评论(bindinput事件)
	 */
	inputComment (e) {
    // 去掉空格
    // var content = e.detail.value.replace(/\s+/g, '');
    console.log("用户输入的评论：",e.detail.value)
		this.setData({
			commentContent: e.detail.value,
		});
  },
  // 提交评论
  commentSubmit(){
    if (!this.data.commentContent.replace(/\s+/g, '')) {
      wx.showToast({
        title: '留言内容不能为空！',
        icon: 'none',
        duration: 2000
      })
      return
    }
    this.setData({showLoading: true});
    // 隐藏提交按钮
    this.setData({ commentBtnShow: true});
    this.data.ButtonTimer = setInterval(() => {
      if (countdown == 0) {
        // 计时为0时显示提交按钮
        this.setData({ commentBtnShow: false })
        countdown = 60;
        clearInterval(this.data.ButtonTimer);
        return;
      } else {
        this.setData({
          LastTime: countdown
        });
        countdown--;
      }
    }, 1000)
    // 持久化评论数据
    // 时间戳
    let timestamp = Date.parse(new Date());
    let commentParams = {
      // _id: Date.parse(new Date()),
      userUrl: this.data.userInfo.avatarUrl,
      nickname: this.data.userInfo.nickName,
      createTime: time.customFormatTime(timestamp,'Y-M-D h:m:s'),
      content: this.data.commentContent,
      // 评论状态status：0-未审核，1-已审核，2-已删除
      status: 0,
      // 管理员回复
      replyMessage: ""
    }
    // console.log("提交的数据：",commentParams);
    wx.cloud.callFunction({
      name: "add",
      data: {
        dbName: "t_comments",
        param: commentParams
      },
      success: (res) => {
        console.log("提交评论回调：", res)
        this.setData({ commentContent: '',showLoading: false });
        if(res.result){
          wx.showModal({
            title: '提示',
            content: '留言成功，审核通过后即可显示！',
            showCancel: false,
            success(res){
              if (res.confirm) {
                console.log('用户点击确定')
              }
            }
          });
          //查询（刷新）评论列表内容
          this.selectAllMessages()
          return;
        }
        wx.showToast({
          title: '服务异常',
          icon: 'none',
          duration: 2000, //单位ms，默认1500
          mask: true
        });
      },
      fail: (error) => {
        this.setData({showLoading: false});
        console.log("提交失败：",error);
        wx.showToast({
          title: '服务异常',
          icon: 'none',
          duration: 3000, //单位ms，默认1500
          mask: true
        });
      }
    })
    
  },
  commentSubmitTips() {
    wx.showToast({
      title: this.data.LastTime + "s 后再次评论",
      icon: 'none',
      duration: 2000
    })
  },
  // 管理员回复
  toReply(e){
		console.log("管理员回复：",e.currentTarget.dataset)
    this.setData({ 
      showReplyModal: true,
      replyId: e.currentTarget.dataset.id,
      replyNickname: e.currentTarget.dataset.nickname
    });
  },
  inputReplyContent(e){
    console.log("回复内容：",e.detail.value);
    this.setData({
      replyContent: e.detail.value
    })
  },
  // 隐藏回复框，清空回复数据
  hideReplyModal(){
    this.setData({
      showReplyModal: false,
      replyContent: ''
    });
  },
  // 提交回复内容 --》持久化
  commitReplyMessage(){
    if (!this.data.replyContent.replace(/\s+/g, '')) {
      wx.showToast({
        title: '回复内容不能为空！',
        icon: 'none',
        duration: 2000
      })
      return;
    }
    this.setData({showLoading: true});
    let replyId = this.data.replyId;
    wx.cloud.callFunction({
      name: "update",
      data: {
        dbName: "t_comments",
        param: {
          replyMessage: this.data.replyContent
        },
        filter:{
          _id: replyId
        }
      }
    }).then( res => {
      this.setData({showLoading: false});
      console.log("提交回复成功回调：",res);
      this.hideReplyModal();
      app.globalData.commentList = '';
      //刷新评论列表
      this.selectAllMessages();
      wx.showModal({
        title: '提示',
        content: '回复留言成功！',
        showCancel: false
      });
    }).catch( err => {
      this.setData({showLoading: false});
      console.log("提交回复失败回调：",err);
      this.hideReplyModal();
      wx.showToast({
        title: '服务异常',
        icon: 'none',
        duration: 3000, //单位ms，默认1500
        mask: true
      });
    })
    
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})